home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -in_the_mag- / workbench / scanning / stscan / scnplane.s < prev    next >
Text File  |  2000-03-05  |  16KB  |  723 lines

  1. ;*
  2. ;*      $VER: scnplanes.s 3.00D (11.8.97)
  3. ;*
  4. ;*      STScan assembler routines
  5. ;*
  6. ;*      Written by Frank-Christian Kruegel, Henning Peters, Andreas R. Kleinert
  7. ;*      GNU General Public License V2
  8. ;*
  9.  
  10.         SECTION "scnplane",CODE
  11.  
  12.  
  13. _p64to16:
  14.         movem.l d0-d7/a0-a6,-(a7)
  15.         move.l  64(a7),a0
  16.         move.l  68(a7),a1
  17.         move.l  72(a7),d7
  18.         subq.w  #1,d7
  19. slp:    move.w  (a0)+,d0
  20.         lsr.w   #2,d0
  21.         lsl.b   #4,d0
  22.         lsr.w   #4,d0
  23.         move.b  d0,(a1)+
  24.         dbra    d7,slp
  25.         movem.l (a7)+,d0-d7/a0-a6
  26.         rts
  27.  
  28. _clrscr16:
  29.         movem.l d0-d7/a0-a6,-(a7)
  30.         move.l  64(a7),a1
  31.         move.l  68(a7),a2
  32.         move.l  72(a7),a3
  33.         move.l  76(a7),a4
  34.         move.w  80(a7),d5
  35.         subq.w  #1,d5
  36. clr4lp0:
  37.         move.w  82(a7),d7
  38.         lsr.w   #1,d7
  39.         subq.w  #1,d7
  40. clr4lp1:
  41.         clr.w   (a1)+
  42.         clr.w   (a2)+
  43.         clr.w   (a3)+
  44.         clr.w   (a4)+
  45.         dbra    d7,clr4lp1
  46.         lea.l   2(a1),a1
  47.         lea.l   2(a2),a2
  48.         lea.l   2(a3),a3
  49.         lea.l   2(a4),a4
  50.         dbra    d5,clr4lp0
  51.         movem.l (a7)+,d0-d7/a0-a6
  52.         rts
  53.  
  54. _clrscr4:
  55.         movem.l d0-d7/a0-a6,-(a7)
  56.         move.l  64(a7),a1
  57.         move.l  68(a7),a2
  58.         move.w  72(a7),d5
  59.         subq.w  #1,d5
  60. clr2lp0:
  61.         move.w  74(a7),d7
  62.         lsr.w   #1,d7
  63.         subq.w  #1,d7
  64. clr2lp1:
  65.         clr.w   (a1)+
  66.         clr.w   (a2)+
  67.         dbra    d7,clr2lp1
  68.         lea.l   2(a1),a1
  69.         lea.l   2(a2),a2
  70.         dbra    d5,clr2lp0
  71.         movem.l (a7)+,d0-d7/a0-a6
  72.         rts
  73.  
  74. _bwview16:
  75.         movem.l d0-d7/a0-a6,-(a7)
  76.         move.l  64(a7),a0
  77.         move.l  68(a7),a1
  78.         move.l  72(a7),a2
  79.         move.l  76(a7),a3
  80.         move.l  80(a7),a4
  81.         move.l  84(a7),a5
  82.         move.w  88(a7),d5
  83.         subq.w  #1,d5
  84. bw4lp0: move.l  a0,a6
  85.         move.w  92(a7),d7
  86.         subq.w  #1,d7
  87. bw4lp1: move.b  (a6)+,d6
  88.         move.b  d6,(a1)+
  89.         clr.b   (a2)+
  90.         clr.b   (a3)+
  91.         clr.b   (a4)+
  92.         dbra    d7,bw4lp1
  93.         move.w  94(a7),d7
  94.         beq.s   bw4nb
  95.         subq.w  #1,d7
  96. bw4lp2: clr.b   (a1)+
  97.         clr.b   (a2)+
  98.         clr.b   (a3)+
  99.         clr.b   (a4)+
  100.         dbra    d7,bw4lp2
  101. bw4nb:  lea.l   2(a1),a1
  102.         lea.l   2(a2),a2
  103.         lea.l   2(a3),a3
  104.         lea.l   2(a4),a4
  105.         adda.l  a5,a0
  106.         dbra    d5,bw4lp0
  107.         move.w  90(a7),d5
  108.         beq.s   bw4x
  109.         subq.w  #1,d5
  110.         move.w  92(a7),d4
  111.         add.w   94(a7),d4
  112.         subq.w  #1,d4
  113. bw4lp3: move.w  d4,d7
  114. bw4lp4: clr.b   (a1)+
  115.         clr.b   (a2)+
  116.         clr.b   (a3)+
  117.         clr.b   (a4)+
  118.         dbra    d7,bw4lp4
  119.         lea.l   2(a1),a1
  120.         lea.l   2(a2),a2
  121.         lea.l   2(a3),a3
  122.         lea.l   2(a4),a4
  123.         dbra    d5,bw4lp3
  124. bw4x:   movem.l (a7)+,d0-d7/a0-a6
  125.         rts
  126.  
  127. _bwview4:
  128.         movem.l d0-d7/a0-a6,-(a7)
  129.         move.l  64(a7),a0
  130.         move.l  68(a7),a1
  131.         move.l  72(a7),a2
  132.         move.l  76(a7),a5
  133.         move.w  80(a7),d5
  134.         subq.w  #1,d5
  135. bw2lp0: move.l  a0,a6
  136.         move.w  84(a7),d7
  137.         subq.w  #1,d7
  138. bw2lp1: move.b  (a6)+,d6
  139.         move.b  d6,(a1)+
  140.         clr.b   (a2)+
  141.         dbra    d7,bw2lp1
  142.         move.w  86(a7),d7
  143.         beq.s   bw2nb
  144.         subq.w  #1,d7
  145. bw2lp2: clr.b   (a1)+
  146.         clr.b   (a2)+
  147.         dbra    d7,bw2lp2
  148. bw2nb:  lea.l   2(a1),a1
  149.         lea.l   2(a2),a2
  150.         adda.l  a5,a0
  151.         dbra    d5,bw2lp0
  152.         move.w  82(a7),d5
  153.         beq.s   bw2x
  154.         subq.w  #1,d5
  155.         move.w  84(a7),d4
  156.         add.w   86(a7),d4
  157.         subq.w  #1,d4
  158. bw2lp3: move.w  d4,d7
  159. bw2lp4: clr.b   (a1)+
  160.         clr.b   (a2)+
  161.         dbra    d7,bw2lp4
  162.         lea.l   2(a1),a1
  163.         lea.l   2(a2),a2
  164.         dbra    d5,bw2lp3
  165. bw2x:   movem.l (a7)+,d0-d7/a0-a6
  166.         rts
  167.  
  168. _grayview16:
  169.         movem.l d0-d7/a0-a6,-(a7)
  170.         move.l  64(a7),a0
  171.         move.l  68(a7),a1
  172.         move.l  72(a7),a2
  173.         move.l  76(a7),a3
  174.         move.l  80(a7),a4
  175.         move.l  84(a7),a5
  176.         move.l  #$10000000,d6
  177.         move.w  88(a7),d5
  178.         subq.w  #1,d5
  179. gr4lp0: move.l  a0,a6
  180.         move.w  92(a7),d7
  181.         subq.w  #1,d7
  182. gr4lp1: move.l  (a6)+,d0
  183.         add.l   d6,d0
  184.         lsl.l   #1,d0
  185.         roxl.b  #1,d4
  186.         lsl.l   #1,d0
  187.         roxl.b  #1,d3
  188.         lsl.l   #1,d0
  189.         roxl.b  #1,d2
  190.         lsl.l   #1,d0
  191.         roxl.b  #1,d1
  192.         add.l   d6,d0
  193.         lsl.l   #1,d0
  194.         roxl.b  #1,d4
  195.         lsl.l   #1,d0
  196.         roxl.b  #1,d3
  197.         lsl.l   #1,d0
  198.         roxl.b  #1,d2
  199.         lsl.l   #1,d0
  200.         roxl.b  #1,d1
  201.         add.l   d6,d0
  202.         lsl.l   #1,d0
  203.         roxl.b  #1,d4
  204.         lsl.l   #1,d0
  205.         roxl.b  #1,d3
  206.         lsl.l   #1,d0
  207.         roxl.b  #1,d2
  208.         lsl.l   #1,d0
  209.         roxl.b  #1,d1
  210.         add.l   d6,d0
  211.         lsl.l   #1,d0
  212.         roxl.b  #1,d4
  213.         lsl.l   #1,d0
  214.         roxl.b  #1,d3
  215.         lsl.l   #1,d0
  216.         roxl.b  #1,d2
  217.         lsl.l   #1,d0
  218.         roxl.b  #1,d1
  219.         add.l   d6,d0
  220.         lsl.l   #1,d0
  221.         roxl.b  #1,d4
  222.         lsl.l   #1,d0
  223.         roxl.b  #1,d3
  224.         lsl.l   #1,d0
  225.         roxl.b  #1,d2
  226.         lsl.l   #1,d0
  227.         roxl.b  #1,d1
  228.         add.l   d6,d0
  229.         lsl.l   #1,d0
  230.         roxl.b  #1,d4
  231.         lsl.l   #1,d0
  232.         roxl.b  #1,d3
  233.         lsl.l   #1,d0
  234.         roxl.b  #1,d2
  235.         lsl.l   #1,d0
  236.         roxl.b  #1,d1
  237.         add.l   d6,d0
  238.         lsl.l   #1,d0
  239.         roxl.b  #1,d4
  240.         lsl.l   #1,d0
  241.         roxl.b  #1,d3
  242.         lsl.l   #1,d0
  243.         roxl.b  #1,d2
  244.         lsl.l   #1,d0
  245.         roxl.b  #1,d1
  246.         add.l   d6,d0
  247.         lsl.l   #1,d0
  248.         roxl.b  #1,d4
  249.         lsl.l   #1,d0
  250.         roxl.b  #1,d3
  251.         lsl.l   #1,d0
  252.         roxl.b  #1,d2
  253.         lsl.l   #1,d0
  254.         roxl.b  #1,d1
  255.         move.b  d1,(a1)+
  256.         move.b  d2,(a2)+
  257.         move.b  d3,(a3)+
  258.         move.b  d4,(a4)+
  259.         dbra    d7,gr4lp1
  260.         move.w  94(a7),d7
  261.         beq.s   gr4nb
  262.         subq.w  #1,d7
  263. gr4lp2: clr.b   (a1)+
  264.         clr.b   (a2)+
  265.         clr.b   (a3)+
  266.         clr.b   (a4)+
  267.         dbra    d7,gr4lp2
  268. gr4nb:  lea.l   2(a1),a1
  269.         lea.l   2(a2),a2
  270.         lea.l   2(a3),a3
  271.         lea.l   2(a4),a4
  272.         adda.l  a5,a0
  273.         dbra    d5,gr4lp0
  274.         move.w  90(a7),d5
  275.         beq.s   gr4x
  276.         subq.w  #1,d5
  277.         move.w  92(a7),d4
  278.         add.w   94(a7),d4
  279.         subq.w  #1,d4
  280. gr4lp3: move.w  d4,d7
  281. gr4lp4: clr.b   (a1)+
  282.         clr.b   (a2)+
  283.         clr.b   (a3)+
  284.         clr.b   (a4)+
  285.         dbra    d7,gr4lp4
  286.         lea.l   2(a1),a1
  287.         lea.l   2(a2),a2
  288.         lea.l   2(a3),a3
  289.         lea.l   2(a4),a4
  290.         dbra    d5,gr4lp3
  291. gr4x:   movem.l (a7)+,d0-d7/a0-a6
  292.         rts
  293.  
  294. _grayview4:
  295.         movem.l d0-d7/a0-a6,-(a7)
  296.         move.l  64(a7),a0
  297.         move.l  68(a7),a1
  298.         move.l  72(a7),a2
  299.         move.l  76(a7),a5
  300.         move.l  #$40000000,d6
  301.         move.w  80(a7),d5
  302.         subq.w  #1,d5
  303. gr2lp0: move.l  a0,a6
  304.         move.w  84(a7),d7
  305.         subq.w  #1,d7
  306. gr2lp1: move.l  (a6)+,d0
  307.         add.l   d6,d0
  308.         lsl.l   #1,d0
  309.         roxl.b  #1,d4
  310.         lsl.l   #1,d0
  311.         roxl.b  #1,d3
  312.         lsl.l   #2,d0
  313.         add.l   d6,d0
  314.         lsl.l   #1,d0
  315.         roxl.b  #1,d4
  316.         lsl.l   #1,d0
  317.         roxl.b  #1,d3
  318.         lsl.l   #2,d0
  319.         add.l   d6,d0
  320.         lsl.l   #1,d0
  321.         roxl.b  #1,d4
  322.         lsl.l   #1,d0
  323.         roxl.b  #1,d3
  324.         lsl.l   #2,d0
  325.         add.l   d6,d0
  326.         lsl.l   #1,d0
  327.         roxl.b  #1,d4
  328.         lsl.l   #1,d0
  329.         roxl.b  #1,d3
  330.         lsl.l   #2,d0
  331.         add.l   d6,d0
  332.         lsl.l   #1,d0
  333.         roxl.b  #1,d4
  334.         lsl.l   #1,d0
  335.         roxl.b  #1,d3
  336.         lsl.l   #2,d0
  337.         add.l   d6,d0
  338.         lsl.l   #1,d0
  339.         roxl.b  #1,d4
  340.         lsl.l   #1,d0
  341.         roxl.b  #1,d3
  342.         lsl.l   #2,d0
  343.         add.l   d6,d0
  344.         lsl.l   #1,d0
  345.         roxl.b  #1,d4
  346.         lsl.l   #1,d0
  347.         roxl.b  #1,d3
  348.         lsl.l   #2,d0
  349.         add.l   d6,d0
  350.         lsl.l   #1,d0
  351.         roxl.b  #1,d4
  352.         lsl.l   #1,d0
  353.         roxl.b  #1,d3
  354.         lsl.l   #2,d0
  355.         move.b  d3,(a1)+
  356.         move.b  d4,(a2)+
  357.         dbra    d7,gr2lp1
  358.         move.w  86(a7),d7
  359.         beq.s   gr2nb
  360.         subq.w  #1,d7
  361. gr2lp2: clr.b   (a1)+
  362.         clr.b   (a2)+
  363.         dbra    d7,gr2lp2
  364. gr2nb:  lea.l   2(a1),a1
  365.         lea.l   2(a2),a2
  366.         adda.l  a5,a0
  367.         dbra    d5,gr2lp0
  368.         move.w  82(a7),d5
  369.         beq.s   gr2x
  370.         subq.w  #1,d5
  371.         move.w  84(a7),d4
  372.         add.w   86(a7),d4
  373.         subq.w  #1,d4
  374. gr2lp3: move.w  d4,d7
  375. gr2lp4: clr.b   (a1)+
  376.         clr.b   (a2)+
  377.         dbra    d7,gr2lp4
  378.         lea.l   2(a1),a1
  379.         lea.l   2(a2),a2
  380.         dbra    d5,gr2lp3
  381. gr2x:   movem.l (a7)+,d0-d7/a0-a6
  382.         rts
  383.  
  384. _vplanesep16:
  385.         movem.l d0-d7/a0-a6,-(a7)
  386.         move.l  64(a7),a0
  387.         move.l  68(a7),a1
  388.         move.l  72(a7),a2
  389.         move.l  76(a7),a3
  390.         move.l  80(a7),a4
  391.         move.l  84(a7),d7
  392.         move.l  #$10000000,d6
  393.         subq.w  #1,d7
  394. vp4lp:  move.l  (a0)+,d0
  395.         add.l   d6,d0
  396.         lsl.l   #1,d0
  397.         roxl.b  #1,d4
  398.         lsl.l   #1,d0
  399.         roxl.b  #1,d3
  400.         lsl.l   #1,d0
  401.         roxl.b  #1,d2
  402.         lsl.l   #1,d0
  403.         roxl.b  #1,d1
  404.         add.l   d6,d0
  405.         lsl.l   #1,d0
  406.         roxl.b  #1,d4
  407.         lsl.l   #1,d0
  408.         roxl.b  #1,d3
  409.         lsl.l   #1,d0
  410.         roxl.b  #1,d2
  411.         lsl.l   #1,d0
  412.         roxl.b  #1,d1
  413.         add.l   d6,d0
  414.         lsl.l   #1,d0
  415.         roxl.b  #1,d4
  416.         lsl.l   #1,d0
  417.         roxl.b  #1,d3
  418.         lsl.l   #1,d0
  419.         roxl.b  #1,d2
  420.         lsl.l   #1,d0
  421.         roxl.b  #1,d1
  422.         add.l   d6,d0
  423.         lsl.l   #1,d0
  424.         roxl.b  #1,d4
  425.         lsl.l   #1,d0
  426.         roxl.b  #1,d3
  427.         lsl.l   #1,d0
  428.         roxl.b  #1,d2
  429.         lsl.l   #1,d0
  430.         roxl.b  #1,d1
  431.         add.l   d6,d0
  432.         lsl.l   #1,d0
  433.         roxl.b  #1,d4
  434.         lsl.l   #1,d0
  435.         roxl.b  #1,d3
  436.         lsl.l   #1,d0
  437.         roxl.b  #1,d2
  438.         lsl.l   #1,d0
  439.         roxl.b  #1,d1
  440.         add.l   d6,d0
  441.         lsl.l   #1,d0
  442.         roxl.b  #1,d4
  443.         lsl.l   #1,d0
  444.         roxl.b  #1,d3
  445.         lsl.l   #1,d0
  446.         roxl.b  #1,d2
  447.         lsl.l   #1,d0
  448.         roxl.b  #1,d1
  449.         add.l   d6,d0
  450.         lsl.l   #1,d0
  451.         roxl.b  #1,d4
  452.         lsl.l   #1,d0
  453.         roxl.b  #1,d3
  454.         lsl.l   #1,d0
  455.         roxl.b  #1,d2
  456.         lsl.l   #1,d0
  457.         roxl.b  #1,d1
  458.         add.l   d6,d0
  459.         lsl.l   #1,d0
  460.         roxl.b  #1,d4
  461.         lsl.l   #1,d0
  462.         roxl.b  #1,d3
  463.         lsl.l   #1,d0
  464.         roxl.b  #1,d2
  465.         lsl.l   #1,d0
  466.         roxl.b  #1,d1
  467.         move.b  d1,(a1)+
  468.         move.b  d2,(a2)+
  469.         move.b  d3,(a3)+
  470.         move.b  d4,(a4)+
  471.         dbra    d7,vp4lp
  472.         movem.l (a7)+,d0-d7/a0-a6
  473.         rts
  474.  
  475. _vplanesep4:
  476.         movem.l d0-d7/a0-a6,-(a7)
  477.         move.l  64(a7),a0
  478.         move.l  68(a7),a1
  479.         move.l  72(a7),a2
  480.         move.l  76(a7),d7
  481.         move.l  #$40000000,d6
  482.         subq.w  #1,d7
  483. vp2lp:  move.l  (a0)+,d0
  484.         add.l   d6,d0
  485.         lsl.l   #1,d0
  486.         roxl.b  #1,d4
  487.         lsl.l   #1,d0
  488.         roxl.b  #1,d3
  489.         lsl.l   #2,d0
  490.         add.l   d6,d0
  491.         lsl.l   #1,d0
  492.         roxl.b  #1,d4
  493.         lsl.l   #1,d0
  494.         roxl.b  #1,d3
  495.         lsl.l   #2,d0
  496.         add.l   d6,d0
  497.         lsl.l   #1,d0
  498.         roxl.b  #1,d4
  499.         lsl.l   #1,d0
  500.         roxl.b  #1,d3
  501.         lsl.l   #2,d0
  502.         add.l   d6,d0
  503.         lsl.l   #1,d0
  504.         roxl.b  #1,d4
  505.         lsl.l   #1,d0
  506.         roxl.b  #1,d3
  507.         lsl.l   #2,d0
  508.         add.l   d6,d0
  509.         lsl.l   #1,d0
  510.         roxl.b  #1,d4
  511.         lsl.l   #1,d0
  512.         roxl.b  #1,d3
  513.         lsl.l   #2,d0
  514.         add.l   d6,d0
  515.         lsl.l   #1,d0
  516.         roxl.b  #1,d4
  517.         lsl.l   #1,d0
  518.         roxl.b  #1,d3
  519.         lsl.l   #2,d0
  520.         add.l   d6,d0
  521.         lsl.l   #1,d0
  522.         roxl.b  #1,d4
  523.         lsl.l   #1,d0
  524.         roxl.b  #1,d3
  525.         lsl.l   #2,d0
  526.         add.l   d6,d0
  527.         lsl.l   #1,d0
  528.         roxl.b  #1,d4
  529.         lsl.l   #1,d0
  530.         roxl.b  #1,d3
  531.         lsl.l   #2,d0
  532.         move.b  d3,(a1)+
  533.         move.b  d4,(a2)+
  534.         dbra    d7,vp2lp
  535.         movem.l (a7)+,d0-d7/a0-a6
  536.         rts
  537.  
  538. _fplanesep:
  539.         movem.l d0-d7/a0-a6,-(a7)
  540.         move.l  64(a7),a0
  541.         move.l  68(a7),a1
  542.         move.l  72(a7),a2
  543.         move.l  76(a7),a3
  544.         move.l  80(a7),a4
  545.         move.l  84(a7),d7
  546.         subq.w  #1,d7
  547. fplp:   move.l  (a0)+,d0
  548.         lsl.l   #1,d0
  549.         roxl.b  #1,d4
  550.         lsl.l   #1,d0
  551.         roxl.b  #1,d3
  552.         lsl.l   #1,d0
  553.         roxl.b  #1,d2
  554.         lsl.l   #1,d0
  555.         roxl.b  #1,d1
  556.         lsl.l   #1,d0
  557.         roxl.b  #1,d4
  558.         lsl.l   #1,d0
  559.         roxl.b  #1,d3
  560.         lsl.l   #1,d0
  561.         roxl.b  #1,d2
  562.         lsl.l   #1,d0
  563.         roxl.b  #1,d1
  564.         lsl.l   #1,d0
  565.         roxl.b  #1,d4
  566.         lsl.l   #1,d0
  567.         roxl.b  #1,d3
  568.         lsl.l   #1,d0
  569.         roxl.b  #1,d2
  570.         lsl.l   #1,d0
  571.         roxl.b  #1,d1
  572.         lsl.l   #1,d0
  573.         roxl.b  #1,d4
  574.         lsl.l   #1,d0
  575.         roxl.b  #1,d3
  576.         lsl.l   #1,d0
  577.         roxl.b  #1,d2
  578.         lsl.l   #1,d0
  579.         roxl.b  #1,d1
  580.         lsl.l   #1,d0
  581.         roxl.b  #1,d4
  582.         lsl.l   #1,d0
  583.         roxl.b  #1,d3
  584.         lsl.l   #1,d0
  585.         roxl.b  #1,d2
  586.         lsl.l   #1,d0
  587.         roxl.b  #1,d1
  588.         lsl.l   #1,d0
  589.         roxl.b  #1,d4
  590.         lsl.l   #1,d0
  591.         roxl.b  #1,d3
  592.         lsl.l   #1,d0
  593.         roxl.b  #1,d2
  594.         lsl.l   #1,d0
  595.         roxl.b  #1,d1
  596.         lsl.l   #1,d0
  597.         roxl.b  #1,d4
  598.         lsl.l   #1,d0
  599.         roxl.b  #1,d3
  600.         lsl.l   #1,d0
  601.         roxl.b  #1,d2
  602.         lsl.l   #1,d0
  603.         roxl.b  #1,d1
  604.         lsl.l   #1,d0
  605.         roxl.b  #1,d4
  606.         lsl.l   #1,d0
  607.         roxl.b  #1,d3
  608.         lsl.l   #1,d0
  609.         roxl.b  #1,d2
  610.         lsl.l   #1,d0
  611.         roxl.b  #1,d1
  612.         not.b   d1
  613.         not.b   d2
  614.         not.b   d3
  615.         not.b   d4
  616.         move.b  d1,(a1)+
  617.         move.b  d2,(a2)+
  618.         move.b  d3,(a3)+
  619.         move.b  d4,(a4)+
  620.         dbra    d7,fplp
  621.         movem.l (a7)+,d0-d7/a0-a6
  622.         rts
  623.  
  624. _fplanegen:
  625.         movem.l d0-d7/a0-a6,-(a7)
  626.         move.l  64(a7),a0
  627.         move.l  68(a7),a1
  628.         move.l  72(a7),a2
  629.         move.l  76(a7),a3
  630.         move.l  80(a7),a4
  631.         move.l  84(a7),d7
  632.         subq.w  #1,d7
  633. fpglp:  move.b  (a1)+,d1
  634.         not.b   d1
  635.         move.b  (a2)+,d2
  636.         not.b   d2
  637.         move.b  (a3)+,d3
  638.         not.b   d3
  639.         move.b  (a4)+,d4
  640.         not.b   d4
  641.         lsl.b   #1,d4
  642.         roxl.l  #1,d0
  643.         lsl.b   #1,d3
  644.         roxl.l  #1,d0
  645.         lsl.b   #1,d2
  646.         roxl.l  #1,d0
  647.         lsl.b   #1,d1
  648.         roxl.l  #1,d0
  649.         lsl.b   #1,d4
  650.         roxl.l  #1,d0
  651.         lsl.b   #1,d3
  652.         roxl.l  #1,d0
  653.         lsl.b   #1,d2
  654.         roxl.l  #1,d0
  655.         lsl.b   #1,d1
  656.         roxl.l  #1,d0
  657.         lsl.b   #1,d4
  658.         roxl.l  #1,d0
  659.         lsl.b   #1,d3
  660.         roxl.l  #1,d0
  661.         lsl.b   #1,d2
  662.         roxl.l  #1,d0
  663.         lsl.b   #1,d1
  664.         roxl.l  #1,d0
  665.         lsl.b   #1,d4
  666.         roxl.l  #1,d0
  667.         lsl.b   #1,d3
  668.         roxl.l  #1,d0
  669.         lsl.b   #1,d2
  670.         roxl.l  #1,d0
  671.         lsl.b   #1,d1
  672.         roxl.l  #1,d0
  673.         lsl.b   #1,d4
  674.         roxl.l  #1,d0
  675.         lsl.b   #1,d3
  676.         roxl.l  #1,d0
  677.         lsl.b   #1,d2
  678.         roxl.l  #1,d0
  679.         lsl.b   #1,d1
  680.         roxl.l  #1,d0
  681.         lsl.b   #1,d4
  682.         roxl.l  #1,d0
  683.         lsl.b   #1,d3
  684.         roxl.l  #1,d0
  685.         lsl.b   #1,d2
  686.         roxl.l  #1,d0
  687.         lsl.b   #1,d1
  688.         roxl.l  #1,d0
  689.         lsl.b   #1,d4
  690.         roxl.l  #1,d0
  691.         lsl.b   #1,d3
  692.         roxl.l  #1,d0
  693.         lsl.b   #1,d2
  694.         roxl.l  #1,d0
  695.         lsl.b   #1,d1
  696.         roxl.l  #1,d0
  697.         lsl.b   #1,d4
  698.         roxl.l  #1,d0
  699.         lsl.b   #1,d3
  700.         roxl.l  #1,d0
  701.         lsl.b   #1,d2
  702.         roxl.l  #1,d0
  703.         lsl.b   #1,d1
  704.         roxl.l  #1,d0
  705.         move.l  d0,(a0)+
  706.         dbra    d7,fpglp
  707.         movem.l (a7)+,d0-d7/a0-a6
  708.         rts
  709.  
  710.         XDEF    _p64to16
  711.         XDEF    _clrscr16
  712.         XDEF    _clrscr4
  713.         XDEF    _bwview16
  714.         XDEF    _bwview4
  715.         XDEF    _grayview16
  716.         XDEF    _grayview4
  717.         XDEF    _vplanesep16
  718.         XDEF    _vplanesep4
  719.         XDEF    _fplanesep
  720.         XDEF    _fplanegen
  721.  
  722.         END
  723.